﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using SGT.Datos;

namespace SGT.Model
{
    class ManejadorRemitos
    {
        public static void InsertarRemito(Remito r)
        {
            try
            {
                SGT_DB modelo = new SGT_DB();
                SGT.Datos.Remito RemitoNuevo = new Datos.Remito();
                RemitoNuevo.Fecha = r.Fecha;
                RemitoNuevo.Peso = r.Peso;
                RemitoNuevo.ProveedorID = r.ProveedorOrigen.ProveedorID;
                RemitoNuevo.Referencia = r.Referencia;
                RemitoNuevo.SectorID = r.SectorUsado.SectorID;
                modelo.AddToRemito(RemitoNuevo);
                modelo.SaveChanges();
                ManejadorSectores.cargarSector(r.SectorUsado.SectorID, r.Peso);
                modelo.Dispose();
            }
            catch (Exception e)
            {

            }

        }


        public static ObservableCollection<Remito> GetRemitos()
        {
            SGT_DB modelo = new SGT_DB();
            ObservableCollection<Remito> remitos = new ObservableCollection<Remito>();
            var lista = from r in modelo.Remito
                        select r;
                        
            foreach (SGT.Datos.Remito r in lista)
            {
                Remito nuevo = new Remito();
                nuevo.Fecha = r.Fecha;
                nuevo.Peso = (float)r.Peso;
                nuevo.Referencia = r.Referencia;
                nuevo.RemitoID = r.RemitoID;
                nuevo.ProveedorOrigen = ManejadorProveedores.GetProveedor(r.ProveedorID);
                nuevo.SectorUsado = ManejadorSectores.GetSector((int)r.SectorID);
                remitos.Add(nuevo);
                
                
            }
            modelo.Dispose();

            return remitos;
        }

        public static ObservableCollection<Remito> GetRemitos(int SectorID)
        {
            SGT_DB modelo = new SGT_DB();
            ObservableCollection<Remito> remitos = new ObservableCollection<Remito>();
            var lista = from r in modelo.Remito
                        where r.SectorID == SectorID
                        select r;

            foreach (SGT.Datos.Remito r in lista)
            {
                Remito nuevo = new Remito();
                nuevo.Fecha = r.Fecha;
                nuevo.Peso = (float)r.Peso;
                nuevo.Referencia = r.Referencia;
                nuevo.RemitoID = r.RemitoID;
                nuevo.ProveedorOrigen = ManejadorProveedores.GetProveedor(r.ProveedorID);
                nuevo.SectorUsado = ManejadorSectores.GetSector((int)r.SectorID);
                remitos.Add(nuevo);


            }
            modelo.Dispose();

            return remitos;
        }



        public static ObservableCollection<Remito> GetUltimosRemitos(int n)
        {
            SGT_DB modelo = new SGT_DB();
            ObservableCollection<Remito> remitos = new ObservableCollection<Remito>();
            var lista = (from r in modelo.Remito
                        select r).Take(n);

            foreach (SGT.Datos.Remito r in lista)
            {
                Remito nuevo = new Remito();
                nuevo.Fecha = r.Fecha;
                nuevo.Peso = (float)r.Peso;
                nuevo.Referencia = r.Referencia;
                nuevo.RemitoID = r.RemitoID;
                nuevo.ProveedorOrigen = ManejadorProveedores.GetProveedor(r.ProveedorID);
                nuevo.SectorUsado = ManejadorSectores.GetSector((int)r.SectorID);
                remitos.Add(nuevo);


            }
            modelo.Dispose();

            return remitos;
        }


        
       
      


    }
}
